<?php

class Validator 
{

private static $_instance = null;

    private function __construct() {}
    
    private function __clone() {}
    
    public static function getInstance()
    {
        if( null == self::$_instance) { 
            self::$_instance = new Validator();
        }
        return self::$_instance;
    }
        
    public function validateRequest($arr) 
    {
        if(!empty($arr) && is_array($arr)) {
            foreach($arr as $k=>$v) {
                // полный запрет на тэги
                $v = strip_tags($v);
                // обрезать пробелы в запросе
                $v = trim($v);
                // контроль за длинной запроса...Не более 2048 символов
                $v =  substr($v ,0 ,2048 );
                if (!is_numeric($v)) {
                    $v = mysql_real_escape_string($v);
                }
                $validatedData[$k] = $v;
            }
        return $validatedData;
        } else {
            return array();  // вернуть пустой массив
        }
    }
    
    public function validateVideo($str)
    { 
        if (stripos($str, 'youtube.com')) {
            $pattern ='/watch\?v=(?P<video>[a-zA-Z0-9_-]+)/';    
            preg_match($pattern, $str , $matches);
            return "<iframe width='560' height='315' src='http://www.youtube.com/embed/" . $matches['video'] .  "' frameborder='0' allowfullscreen></iframe>";         
        }
        
        if(stripos($str, 'vimeo.com')){
            $pattern ='/vimeo.com\/(?P<video>[0-9]+)/';    
            preg_match($pattern, $str , $matches);
            return " <iframe src='http://player.vimeo.com/video/" . $matches['video'] . "' width='560' height='315' frameborder='0' webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>";     
        }
    }
    
    public function validatePreviewString($str, $limit = 140)
    {
        $str = substr($str,0, $limit); // обрезание строки до $limit
        $str = substr($str, 0, strrpos($str, ' ' )); // строка от 0 до посл. пробела!
        $str .= ' ... ';
        return $str; 
    }
    
    // преобразовать кол-во лет в дату формата Y-m-d
    public function validateYear($int, $plus = 0)
    {
       $bornYear = date('Y') - $int; 
       $timestamp = mktime(0,0,0,date('m'),date('d'),$bornYear + $plus);
       return date('Y-m-d',$timestamp);
    }
    
    
     public function validateQuery($arr)
     {
         
     }
      
}
